草庐IT

Python NotImplemented 常量

全部标签

在运行时定义的 C++ 全局 extern 常量可跨多个源文件使用

我有一个要在运行时定义的整数常量。此常量需要在全局范围内和跨多个源文件可用。我目前有以下简化情况:ClassA.h声明externconstintsomeConstant;ClassA.cpp用途someConstant在某一点。Constants.h声明externconstintsomeConstant;main.cpp包括ClassA.h和Constants.h,声明constintsomeConstant,以及在main()期间的某个时刻尝试初始化someConstant到运行时的实际值。这与char*完美配合我用来让程序的名称在所有文件中全局可用的常量,它的声明和定义与我在这

c++ - 写入 ostream 的常量引用

我正在阅读C++primer。我遇到了以下代码:#include#includeusingnamespacestd;classPrintString{public:PrintString(ostream&o=cout,charc=''):os(o),sep(c){}voidoperator()(conststring&s)const{os此代码有效,但我不知道为什么。以下是我的想法,如果有人能帮助指出我错在哪里,那就太好了......这里,'printer'是一个constPrintString对象,所以它的数据成员是const,所以'printer.os'是对cout的const引用

c++ - static_casting a constexpr void* 的结果是常量表达式吗?

clang正在拒绝gcc允许的这段代码:intmain(){staticconstexprconstvoid*vp=nullptr;staticconstexprconstchar*cp=static_cast(vp);}具有以下内容:error:constexprvariable'cp'mustbeinitializedbyaconstantexpressionstaticconstexprconstchar*cp=static_cast(vp);阅读完N3797中的最终list后5.9/2我没有看到任何禁止在常量表达式中使用static_cast的内容。我是在看错地方还是误读了什么

c++ - 了解常量表达式

我试图理解常量表达式概念(来自c++reference):structS{staticconstintc;};constintd=10*S::c;//notaconstantexpression:S::chasnopreceding//initializer,thisinitializationhappensafterconstconstintS::c=5;//constantinitialization,guaranteedtohappenfirst在我们定义它之前,为什么S::c不是常量表达式。虽然它被声明为静态const数据成员...... 最佳答案

c++ - 返回常量引用

我对返回const对临时对象的引用的函数声明有些困惑。在下面的代码中#include#includeusingnamespacestd;conststring&foo(){returnstring("foo");}stringbar(){returnstring("bar");}intmain(){conststring&f=foo();conststring&b=bar();cout方法foo和bar有什么区别?为什么foo给我warning:returningreferencetolocaltemporaryobject[-Wreturn-stack-address]。不是在con

c++ - 为什么我不允许将返回 const char* 的函数的结果分配给 char*,但可以将字符串文字(常量)分配给 char*?

这个问题在这里已经有了答案:WhatisthetypeofstringliteralsinCandC++?(4个答案)关闭6年前。返回constchar*的函数不能分配给char*constchar*func(){return"Thisisaconststringtwo";}但是char*直接在main中赋值了一个常量字符串:intmain(){char*d="thisisaconststringone";//worksfinechar*e=func();//errorcannotconvertfrom'constchar*'to'char*'return1;}为什么矛盾?

c++ - 为什么在增加 -fconstexpr-steps 后无法解析常量表达式?

以下面的constexpr为例:#includeconstexprintfib(constinti){if(i==0)return0;if(i==1)return1;returnfib(i-1)+fib(i-2);}intmain(){std::cout尽管是constexpr,但它不会在编译时求值。我学到的执行编译时评估的技巧如下:#include#include#defineCOMPILATION_EVAL(e)(std::integral_constant::value)constexprintfib(constinti){if(i==0)return0;if(i==1)retu

c++ - 如何声明一个常量的方法指针

1st这不是关于如何指向常量方法的问题。我想知道如何使我的方法指针保持不变。给定:structfoo{voidfunc1();voidfunc2();};我可以用void(foo::*bar)()=&foo::func1构造一个方法指针但是我以后可以做bar=&foo.func2我想阻止它。我可以使用constautobar=&foo::func1轻松做到这一点,但我不确定如何在c++11之前做到这一点. 最佳答案 您所要做的就是在*之后添加const关键字,如下所示:void(foo::*const_pointer)()=&foo

c++ - 如何指示 VC++ 编译器不内联常量?

我的C++程序中有以下全局常量:constintK=123456;当我编译程序时,生成的可执行文件在所有使用该值的地方(数十次)都包含文字值123456。但是,如果我删除const限定符,值123456在整个可执行文件中只出现一次(在.data部分).这是我正在寻找的结果。我希望值123456只出现一次,以便只需使用十六进制编辑器编辑.exe文件即可更改它。但是,我不想删除const限定符,因为我希望编译器防止我不小心修改源代码中的常量。是否可以指示编译器以某种方式不内联所述常量的值?我需要这样做的原因是,可执行文件很容易被负责“破解”示例程序以改变其行为的学生修改。对于没有经验的人来

c++ - C++中模板常量的默认值

我正在尝试将全局缓冲区大小替换为可针对测试修改的缓冲区大小。当前的代码是这样的:staticconstuint32_tBUFFER_SIZE=1当我尝试更改BUFFER_SIZE以进行测试时,这会导致出现问题。因此,我希望使BUFFER_SIZE成为模板常量,并为所述常量设置默认值,以便我只需要在测试期间指定它,例如:staticconstuint32_tBUFFER_SIZE=1classBufferWrapper{...charbuffer_[SIZE];};这样,以前的声明仍然可以像这样编译:BufferWrapperbuf但是在测试期间,我可以写这样的东西来测试1KB的缓冲区: